The Saturn family of microprocessors was developed by Hewlett-Packard in the 1980s for programmable scientific calculators/microcomputers. The original Saturn chipset was first used in the HP-71B hand-held BASIC computer, introduced in 1984. Later models of the family powered the popular HP-48 series of calculators, among others. The replacement for the HP-48, the HP-49 series initially used the Saturn CPU, but starting with the HP-49g+ model the calculators use ARM CPUs that emulates the Saturn architecture.
The Saturn architecture is nibble-based; that is, the core unit of data is 4 bits, which can hold one binary-coded decimal (BCD) digit.
The Saturn microprocessor is a hybrid 64-bit / 20-bit CPU hardware-wise but acts like a 4-bit processor in that it presents nibble-based data to programs and uses a nibble-based addressing system. The main registers A, B, C, D, along with temp registers R0, R1, R2, R3, and R4 are a full 64-bits wide, but the data registers D0 & D1 are only 20-bit. External logical data fetches are transparently converted to 8-bit physical fetches. The processor has a 20-bit address bus available to code but due to the presence of the high/low nibble selection bit, only 19 bits are available externally.
The Saturn has four general-purpose and five scratch registers that are 64 bits wide. Data in the general-purpose registers can be accessed on nibble boundaries and used for calculations, whereas the scratch registers allow only load and store operations. The 64 bits (16 nibbles) can hold BCD-formatted coded floating point numbers composed of a Plus and minus signs nibble, 12 mantissa digits and a 3-digit exponent stored in 2's complement format (±499). The use of BCD instead of straight binary representation is advantageous for calculators as it avoids rounding problems that occur on the binary/decimal conversion.
For optimum memory usage efficiency, the Saturn's addresses are also nibble-based. The three pointer registers (including the program counter) and address data paths are 20 bits wide, therefore the Saturn architecture can address 1 M nibbles = 512 K bytes. Beyond that size (e.g. in the 48GX), bank switching is used.
In both the HP-48S/SX and G/GX series, the Saturn CPU core is integrated as part of a more complex integrated circuit (IC) package. These packages have codenames inspired by the members of the Lewis and Clark Expedition. The codename of the IC is Clarke in the S/SX, after William Clark, and Yorke in the G/GX, after Clark's manservant. The previous series of Saturn-based ICs were codenamed Lewis, after Meriwether Lewis.
The original Saturn CPU gave its name to the entire architecture. Later chips had their own code names:
CPU codename | Used in calculator models | Properties |
---|---|---|
Saturn | HP-71B, HP-18C, HP-28C | 640 kHz |
Bert | HP-10B, HP-20S, HP-21S | 640 kHz, 10 KB ROM, 256 Bytes RAM, LCD driver |
Sacajawea | HP-14B, HP-22S, HP-32S, HP-32SII | 640 kHz, 16 KB ROM, 512 Bytes RAM, LCD driver |
Lewis | HP-17B, HP-19B, HP-27S, HP-28S, HP-42S | 1 MHz, 64 KB ROM, LCD driver, memory controller, IR control |
Clarke | HP-48SX, HP-48S | 2 MHz, LCD controller, memory controller, UART and IR control |
Yorke | HP-48GX, HP-48G, HP-38G, HP-39G, HP-49G | 3.68 MHz, LCD controller, memory controller, UART and IR control |
The CPU codenames are inspired by members of the Lewis and Clark Expedition of 1804–1806, the first United States overland expedition to the Pacific coast and back.